/*************************************************************************
> File Name: string.cpp
> Author: hzy
> Created Time: 2023-08-19 16:28:31
> Description:
************************************************************************/
#include <iostream>
#include <string>

using namespace std;

/* string 类构造函数和赋值运算使用 */
void test_01()
{
    string str1("doganguapiggg");
    cout << str1 << endl;

    string str2(str1);
    cout << str2 << endl;

    string str3(10, 'h');
    cout << str3 << endl;

    // 将str1从第2个开始赋值5个字符给str4
    string str4(str1, 2, 5);
    cout << str4 << endl;

    /* 重载赋值运算符=实现赋值 */
    string str;
    str = "wjy";

    string str5 = "abcdefg";
    cout << str5 << endl;

    // 用赋值运算符赋值时，不能在声明的时候直接赋值一个字符
    str = 'p';
    cout << str << endl;

    // 通过调用成员函数实现
    str.assign(str5);
    cout << str << endl;
    // 从str5字符串的前2个字符开始赋给str
    str.assign(str5, 2);
    cout << str << endl;

    // 将n个字符'O'赋给str
    str.assign(10, 'O');
    cout << str << endl;

    // 将str5从第2个开始赋值3个字符给str
    str.assign(str5, 2, 3);
    cout << str << endl;
}

/* 字符串的存储访问 */
void test_02()
{
    string str = "abcdefg";

    for (int i = 0; i < str.size(); i++)
    {
        cout << str[i];
    }
    cout << endl;

    for (int i = 0; i < str.size(); i++)
    {
        cout << str.at(i);
    }
    cout << endl;
}
int main()
{
    test_02();

    return 0;
}